Finding Bugs with Specification-Based Testing is Easy!
نویسندگان
چکیده
Automated specification-based testing has a long history with several notable tools having emerged. For example, QuickCheck for Haskell focuses on against user-provided properties. Others, such as JMLUnit, use specifications in the form of pre- and post-conditions to drive testing. An interesting (and under-explored) question is how effective this approach at finding bugs practice. In general, one would assume automated less bug than static verification. But, much effective? To shed light question, we consider programs written Whiley -- language first-class support specifications. Whilst originally designed verification mind, have anecdotally found surprisingly useful cost-effective. when an error detected testing, counterexample always provided. This motivated more rigorous empirical examination presented paper. that end, provide technical discussion implementation behind tool Whiley. Here, key usability concern ability parameterise input space, present novel approaches references lambdas. We then report large experiments investigating tool's effectiveness using range benchmarks, including suite 1800+ mutants. The results indicate many cases, sampling offers performance benefits only modest reductions bug-finding capability. Finally, some real-world uses where it proved (such standard library).
منابع مشابه
Teaching Specification-Based Testing
Historically, relatively less emphasis has been placed on software testing in comparison with other activities, such as systems analysis and design, of the software life cycle in an undergraduate computer science or software engineering curriculum. Testing, however, is a common and important technique used to detect program faults. Thus, testing must be taught rigorously to the students. This p...
متن کاملFinding Concurrency Bugs In Java
Because threads are a core feature of the Java language, the widespread adoption of Java has exposed a much wider audience to concurrency than previous languages have. Concurrent programs are notoriously difficult to write correctly, and many subtle bugs can result from incorrect use of threads and synchronization. Therefore, finding techniques to find concurrency bugs is an important problem. ...
متن کاملFinding the lazy programmer's bugs
Traditionally developers and testers created huge numbers of explicit tests, enumerating interesting cases, perhaps biased by what they believe to be the current boundary conditions of the function being tested. Or at least, they were supposed to. A major step forward was the development of property testing. Property testing requires the user to write a few functional properties that are used t...
متن کاملWhen Specification-based Testing Fails
Armando Haeberer made a substantial contribution in translating results from the philosophy of science to software testing. He showed that the limits of the standard methodology of confirming theories, where observations are derived from the theory and hypothesis, are also present in software testing. He strongly criticized Gaudel’s classical approach on test case generation, but also supplied ...
متن کاملFinding the pareto curve in bimatrix games is easy
Pareto efficiency is a widely used property in solution concepts for cooperative and non–cooperative game–theoretic settings and, more generally, in multi–objective problems. However, finding or even approximating (when the objective functions are not convex) the Pareto curve is hard. Most of the literature focuses on computing concise representations to approximate the Pareto curve or on explo...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: The art, science, and engineering of programming
سال: 2021
ISSN: ['2473-7321']
DOI: https://doi.org/10.22152/programming-journal.org/2021/5/13